/********************************************
 * 功能说明: 
 * 模块名称: 
 * 系统名称: 
 * 软件版权: 北京银杉金服科技有限公司
 * 系统版本: 1.0.0
 * 开发人员: zhangfb
 * 开发时间: 2018/9/9 0:27
 * 审核人员: 
 * 相关文档: 
 * 修改记录: 修改日期 修改人员 修改说明
 *********************************************/
package com.hyacinth.security;

import com.hyacinth.entity.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.AccessDecisionVoter;
import org.springframework.security.access.ConfigAttribute;
import org.springframework.security.core.Authentication;
import org.springframework.stereotype.Component;

import java.util.Collection;

/**
 * 自定义访问决策投票者
 * @author zhangfb
 * @version 1.0.0.1
 * @since JDK 1.8
 */
@Slf4j
@Component
public class CustomAccessDecisionVoter implements AccessDecisionVoter<Object> {

    /**
     * 是否允许传递
     */
    @Override
    public boolean supports(ConfigAttribute attribute) {
        return true;
    }

    /**
     * 是否允许传递
     */
    @Override
    public boolean supports(Class<?> clazz) {
        return true;
    }

    /**
     * 获取选举结果
     * @param authentication the caller making the invocation
     * @param object the secured object being invoked
     * @param attributes the configuration attributes associated with the secured object
     * @return
     *   int ACCESS_GRANTED = 1;
     *   int ACCESS_ABSTAIN = 0;
     *   int ACCESS_DENIED = -1;
     */
    @Override
    public int vote(Authentication authentication, Object object, Collection<ConfigAttribute> attributes) {
        return ACCESS_ABSTAIN;
    }
}
